During the software development lifecycle, application developers may experience time pressures, architectural crossroads, or other programming-related issues during development of a particular application. In some instances, application code may be developed hastily, or without significant attention to certain coding standards or best practices. Such situations may cause developers to introduce imperfections in the application's source code. “Code smells” refer to aspects of an application's code or structure that violate certain design principles or otherwise negatively impact aspects of the application's design. While some code smells may not be considered “bugs” in the software (e.g., the particular code segment operates as intended), the violation of software design principles or coding best practices may cause some software developers to wish to alter application source code to remove such code smells. Further, as technology advances, new techniques, tools, architectures, programming languages and frameworks emerge to help developers cater to new hardware, platforms, and users. As such, some software may not be optimal for such new hardware, platforms, and users, and may benefit from new architectures that have emerged since the application's initial development. Developers may perform certain aspects of software refactoring, changing certain non-functional aspects of the application to address such concerns.